﻿using Abp.Application.Services.Dto;
using Mt.Site.Application.Authorization.Users.Dto;
using Mt.Site.Application.Dto;
using System.Threading.Tasks;

namespace Mt.Site.Application.Authorization.Users
{
    public interface IUserAppService : IBackEndAppService
    {
        Task<PagedResultDto<UserListDto>> GetUsers(GetUsersInput input);

        Task<FileDto> GetUsersToExcel(GetUsersToExcelInput input);

        Task<GetUserForEditOutput> GetUserForEdit(NullableIdDto<long> input);

        Task<GetUserPermissionsForEditOutput> GetUserPermissionsForEdit(EntityDto<long> input);

        Task ResetUserSpecificPermissions(EntityDto<long> input);

        Task UpdateUserPermissions(UpdateUserPermissionsInput input);

        Task ResetUserSpecificMenuPermissions(EntityDto<long> input);

        Task CreateOrUpdateUser(CreateOrUpdateUserInput input);


        Task DeleteUser(EntityDto<long> input);

        Task UnlockUser(EntityDto<long> input);


        Task SwapSortNumber(SwapSortNumberInput<long> input);

        Task SetNewSorNumber(NewSortNumberInput<long> input);
    }
}